factory pattern using java